import sys

from PyQt6.QtGui import QAction, QIcon
from PyQt6.QtWidgets import QApplication, QMainWindow, QMenu, QTextEdit


class MenuBar(QMainWindow):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 设置左下角状态栏
        self.statusBar()
        self.statusBar().showMessage('程序准备好了')
        # 这里创建了一个文本编辑器组件，并把它设置到 QMainWindow 的中央。居中布局组件撑满了所有空白的部分。
        textEdit = QTextEdit("这是一个文本输入框")
        self.setCentralWidget(textEdit)

        # 设置工具栏
        self.toolbar = self.addToolBar('退出')

        exitAct = QAction(QIcon('logo.png'), '&退出', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.setStatusTip('退出应用')
        exitAct.triggered.connect(QApplication.instance().quit)

        self.toolbar.addAction(exitAct)
        # 设置菜单栏
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&操作')
        editMenu = menubar.addMenu('&编辑')
        viewMenu = menubar.addMenu('&视图')
        fileMenu.addAction(exitAct)

        childMenu = QMenu("子菜单", self)
        childAction = QAction("子事件", self)
        childMenu.addAction(childAction)

        fileMenu.addMenu(childMenu)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('主窗口示例')
        self.show()

    # 添加右键菜单
    def contextMenuEvent(self, event):
        cmenu = QMenu(self)

        newAct = cmenu.addAction("New")
        openAct = cmenu.addAction("Open")
        quitAct = cmenu.addAction("Quit")
        action = cmenu.exec(self.mapToGlobal(event.pos()))

        if action == quitAct:
            QApplication.instance().quit()


# 启动
def main():
    app = QApplication(sys.argv)

    m = MenuBar()

    sys.exit(app.exec())


if __name__ == '__main__':
    main()
